local path = minetest.get_modpath(minetest.get_current_modname())

lunogauges = { }
lunogauges.huds = { }
lunogauges.huds.time = 0

--dofile(path.."/api_hp_entity.lua")
dofile(path.."/api_hud_hotbar.lua")
dofile(path.."/api_hud_hp.lua")
dofile(path.."/api_hud_air.lua")
dofile(path.."/api_hud_stamina.lua")
dofile(path.."/api_hud_level.lua")

minetest.register_on_respawnplayer(function(player)
	if lunogauges.huds.update_air ~= nil then
		lunogauges.huds.update_air(player)
	end
	if lunogauges.huds.update_hp ~= nil then
		lunogauges.huds.update_hp(player)
	end
	if lunogauges.huds.update_stamin ~= nil then
		lunogauges.huds.set_stamin(player:get_player_name(), 20)
		lunogauges.huds.update_stamin(player)
	end
	if lunogauges.huds.update_xp ~= nil then
		lunogauges.huds.update_xp(player)
	end
end)

minetest.register_on_joinplayer(function(player)
	lunogauges.huds.show_hotbar(player) -- <= Caso a hotbar estiver sumindo quando o player estiver logando pela segunda vez no decorrer da execucao do server.

	if lunogauges.huds.add_air ~= nil then
		lunogauges.huds.add_air(player)
	end
	if lunogauges.huds.add_hp ~= nil then
		lunogauges.huds.add_hp(player)
	end
	if lunogauges.huds.add_stamin ~= nil then
		lunogauges.huds.add_stamin(player)
	end
	if lunogauges.huds.add_xp ~= nil then
		lunogauges.huds.add_xp(player)
	end
end)

if lunogauges.huds.update_hp ~= nil or lunogauges.huds.update_air ~= nil or lunogauges.huds.check_angry ~= nil then
	minetest.after(3, function()
		if lunogauges.huds.update_air ~= nil or lunogauges.huds.update_hp ~= nil then --So vai ocupar processamento se "api_hud_hp.lua" e "api_hud_air.lua" estiverem funcionando bem.
			minetest.register_globalstep(function(dtime)
				local players = minetest.get_connected_players()
				if #players >= 1 then
					local uptime = 1.0 + (#players * dtime * 2) --Não sei se 0.3 e rapido d+ ou lento d+
					if lunogauges.huds.time==nil or type(lunogauges.huds.time)~="number" then 
						lunogauges.huds.time = 0 
					end
					lunogauges.huds.time = lunogauges.huds.time + dtime; -- 'dtime' e sempre uma fracao entre 0 e 1
					--print("lunogauges.huds.time("..lunogauges.huds.time..") >= uptime("..uptime..")")
					if lunogauges.huds.time >= uptime then --atualiza a barra do jogador a cada 'uptime' segundos (se hp tiver mudado)
						--OBS.: Não sei se o valor 0.1 acima
						for _, player in ipairs(players) do
							if player~= nil and player:is_player() then
								--print("lunogauges.huds.update_hp("..player:get_player_name()..")")
								if lunogauges.huds.update_air ~= nil then
									lunogauges.huds.update_air(player)
								end
								if lunogauges.huds.update_hp ~= nil then
									lunogauges.huds.update_hp(player)
								end
								if lunogauges.huds.check_angry ~= nil then
									lunogauges.huds.check_angry(player, lunogauges.huds.time)
								end
								if lunogauges.huds.update_xp ~= nil then
									lunogauges.huds.update_xp(player)
								end
							end
						end
						lunogauges.huds.time = 0
					end
				end
			end)
		end
	end)
end

minetest.log('action',"["..minetest.get_current_modname():upper().."] Carregado!")
